﻿using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Collections.Generic;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using GC2.Bussines;
using GC2.Bussines.BMAdmin;
using GC2.Entities.Comunes;
using GC2.Entities.Admin;
using GC2.Entities.Seguridad;
using GC2.ExceptionHandler;

public partial class ClientesGestion : GenericPage
{
    #region Propiedades
    Usuarios usuario = new Usuarios();
    private Clientes cliente = new Clientes();    
    private ExceptionConstructor exNew = new ExceptionConstructor();
    private int Accion;
    GC2.Funciones.General.FunctionsSite f = new GC2.Funciones.General.FunctionsSite();
    int iDiaCumple = 0;
    int iMesCumple = 0;
    int iACumple = 0;
    int iAño = 0;
    #endregion

    #region Controles

    #region Page_Load
    protected void Page_Load(object sender, EventArgs e)
    {
        try
        {
            SetearCultura();
            SetearConexion();
            if (!this.IsPostBack)
            {
                usuario = (Usuarios)Session["UsuarioActual"];
                CargarCombo();
                Accion = Convert.ToInt16(Session["Accion"].ToString());
                btnOtro.Visible = false;
                lblTipoMal.Visible = false;
                lblCuitMal.Visible = false;
                if (Accion > 1)
                {
                    cliente = (Clientes)Session["Cliente"];
                    HidrataControles(cliente);
                    if (Accion == 2)
                    {
                        lblAccion.Text = "Modificación";
                    }
                    else
                    {
                        lblAccion.Text = "Viendo Datos";
                    }
                }
                if (Accion == 1)
                {
                    lblAccion.Text = "Nuevo Cliente";
                    txtSaldo.Text = "0";
                    FechaIng.SetFecha(DateTime.Now.Date);
                    FechaEstado.SetFecha(DateTime.Now.Date);
                }
            }
        }
        catch (Exception ex) { ErrorUI(ex); }

    }
    #endregion

    #region btnGuardar_Click
    protected void btnGuardar_Click(object sender, EventArgs e)
    {
        try
        {
            lblAccion.Text = "";
            lblError.Text = "";
            
            if (txtNombre.Text == "")
            {
                lblError.Text = "No se puede Guardar un Cliente sin Nombre.";
            }
            else
            {  
                if (f.isNumeric(TxtDiaCumple.Text))
                {
                    iDiaCumple = Convert.ToInt16(TxtDiaCumple.Text);
                    if (iDiaCumple > 31)
                    {
                        lblError.Text = "Día de Cumpleaños incorrecto.";
                        return;
                    }
                }
                else
                {
                        lblError.Text = "Día de Cumpleaños incorrecto.";
                        return;
                }

                if (f.isNumeric(TxtMesCumple.Text))
                {
                    iMesCumple = Convert.ToInt16(TxtMesCumple.Text);
                    if (iMesCumple > 12)
                    {
                        lblError.Text = "Mes de Cumpleaños incorrecto.";
                        return;
                    }
                }
                else
                {
                    lblError.Text = "Mes de Cumpleaños incorrecto.";
                    return;
                }

                if (f.isNumeric(TxtACumple.Text))
                {
                    iACumple = Convert.ToInt16(TxtACumple.Text);
                    iAño = Convert.ToInt16(DateTime.Now.Year.ToString());
                    if (iACumple > iAño)
                    {
                        lblError.Text = "Año de Cumpleaños incorrecto.";
                        return;
                    }
                }
                else
                {
                    lblError.Text = "Año de Cumpleaños incorrecto.";
                    return;
                }


                if (txtTipoFac.Text == "")
                {
                    DesHidrataControles();
                }
                else
                if (txtTipoFac.Text == "A" || txtTipoFac.Text == "B" || txtTipoFac.Text == "C" || txtTipoFac.Text == "E")
                {
                    DesHidrataControles();
                }
                else
                {
                    lblError.Text = "Tipo de Factura debe ser A B C o E";
                }
            }
        }
        catch (Exception ex) { ErrorUI(ex); }
    }
    #endregion

    #region btnCancelar_Click
    protected void btnCancelar_Click(object sender, EventArgs e)
    {
        try
        {
            Response.Redirect("~/Seguridad/Default.aspx", false);
        }
        catch (Exception ex) { ErrorUI(ex); }
    }
    #endregion

    #region btnOtro_Click
    protected void btnOtro_Click(object sender, EventArgs e)
    {
        try
        {
            Limpiar();
            btnOtro.Visible = false;
        }
        catch (Exception ex) { ErrorUI(ex); }
    }
    #endregion

    #region txtTipoFac_TextChanged
    protected void txtTipoFac_TextChanged(object sender, EventArgs e)
    {
        try
        {
            lblTipoMal.Visible = true;
            if (txtTipoFac.Text == "")
            {
                lblTipoMal.Visible = false;
            }
            if (txtTipoFac.Text == "A")
            {
                lblTipoMal.Visible = false;
            }
            if (txtTipoFac.Text == "B")
            {
                lblTipoMal.Visible = false;
            }
            if (txtTipoFac.Text == "C")
            {
                lblTipoMal.Visible = false;
            }
            if (txtTipoFac.Text == "E")
            {
                lblTipoMal.Visible = false;
            }
        }
        catch (Exception ex) { ErrorUI(ex); }
    }
    #endregion

    #endregion

    #region Métodos

    #region CargarCombo
    protected void CargarCombo()
    {
        try
        {
            List<Provincias> listaProvincias = ListaProvincias();
            foreach (Provincias provincia in listaProvincias)
            {
                ListItem liItem = new ListItem();
                liItem.Value = provincia.ProvCod.ToString();
                liItem.Text = provincia.Provincia;
                cboProvincia.Items.Add(liItem);
            }
        }
        catch (Exception ex) { ErrorUI(ex); }
    }
    #endregion

    #region HidrataControles
    /// <summary>
    /// Hidrata Controles Cliente
    /// </summary>
    /// <param name="titular"></param>
    private void HidrataControles(Clientes cliente)
    {
        try
        {
            txtNombre.Text = cliente.Nombre;
            txtSaldo.Text = cliente.Saldo.ToString();
            txtBanco1.Text = cliente.Banco1;
            txtCuenta1.Text = cliente.Cuenta1;
            txtBanco2.Text = cliente.Banco2;
            txtCuenta2.Text = cliente.Cuenta2;
            txtDireccion.Text = cliente.Direccion;
            txtLocalidad.Text = cliente.Localidad;
            cboProvincia.SelectedValue = cliente.Id_Provincia.ToString();
            txtCodPostal.Text = cliente.CodPostal;
            txtTe1.Text = cliente.Te1;
            txtTe2.Text = cliente.Te2;
            txtTe3.Text = cliente.Te3;
            txtTe4.Text = cliente.Te4;
            FechaIng.SetFecha(cliente.FechaIng);
            FechaEstado.SetFecha(cliente.FechaEstado);
            txtContacto.Text = cliente.Contacto;
            cboEstado.SelectedValue = cliente.Estado;
            txtEmail.Text = cliente.Email;
            txtObs.Text = cliente.Obs;
            txtDatosFactura.Text = cliente.DatosFactura;
            txtTipoFac.Text = cliente.TipoFac;
            if (cliente.Cuit > 0)
            {
                string sTemp = cliente.Cuit.ToString();
                txtCuit1.Text = sTemp.Substring(0, 2);
                txtCuit2.Text += sTemp.Substring(2, 8);
                txtCuit3.Text += sTemp.Substring(10, 1);
            }
            TxtDiaCumple.Text = cliente.DiaNac.ToString();
            TxtMesCumple.Text = cliente.MesNac.ToString();
            TxtACumple.Text = cliente.AnioNac.ToString();
            txtCondIva.Text = cliente.CondIva;
            
        }
        catch (Exception ex) { ErrorUI(ex); }
    }
    #endregion

    #region DesHidrataControles
    /// <summary>
    /// DesHidrata Controles Proveedor
    /// </summary>
    /// <param name="titular"></param>
    private void DesHidrataControles()
    {
        try
        {
            BMClientes bmClientes = new BMClientes(Connection);

            Accion = Convert.ToInt16(Session["Accion"].ToString());
            if (Accion > 1)
            {
                cliente = (Clientes)Session["Cliente"];
            }
            cliente.Nombre = txtNombre.Text;
            cliente.Saldo = Convert.ToDecimal(txtSaldo.Text.Trim());
            cliente.Banco1 = txtBanco1.Text;
            cliente.Cuenta1 = txtCuenta1.Text;
            cliente.Banco2 = txtBanco2.Text;
            cliente.Cuenta2 = txtCuenta2.Text;
            cliente.Direccion = txtDireccion.Text;
            cliente.Localidad = txtLocalidad.Text;
            cliente.Id_Provincia = Convert.ToInt16(cboProvincia.SelectedValue);
            cliente.Provincia = cboProvincia.SelectedItem.Text;
            cliente.CodPostal = txtCodPostal.Text;
            cliente.Te1 = txtTe1.Text;
            cliente.Te2 = txtTe2.Text;
            cliente.Te3 = txtTe3.Text;
            cliente.Te4 = txtTe4.Text;
            cliente.FechaIng = FechaIng.GetFecha();
            cliente.FechaEstado = FechaEstado.GetFecha();
            cliente.Contacto = txtContacto.Text;
            cliente.Estado = cboEstado.SelectedValue;
            cliente.Email = txtEmail.Text;
            cliente.Obs = txtObs.Text;
            cliente.DatosFactura = txtDatosFactura.Text;
            cliente.TipoFac = txtTipoFac.Text;
            cliente.DiaNac = iDiaCumple;
            cliente.MesNac = iMesCumple;
            cliente.AnioNac = iACumple;
            cliente.CondIva = txtCondIva.Text;
            if (txtCuit1.Text != "")
            {
                bool bCuit = true;
                if (!f.isNumeric(txtCuit1.Text) || txtCuit1.Text.Length != 2)
                {
                    bCuit = false;
                }
                if (!f.isNumeric(txtCuit2.Text) || txtCuit2.Text.Length != 8)
                {
                    bCuit = false;
                }
                if (!f.isNumeric(txtCuit3.Text))
                {
                    bCuit = false;
                }
                if(bCuit)
                {
                    string sTemp = txtCuit1.Text;
                    sTemp += txtCuit2.Text;
                    sTemp += txtCuit3.Text;
                
                    cliente.Cuit = Convert.ToInt64(sTemp);
                    lblCuitMal.Visible = false;
                }
                else
                {
                    lblCuitMal.Visible = true;
                    return;
                }
                
            }

            if (Accion == 1)
            {
                cliente = bmClientes.BMClientesInsert(cliente);
                lblAccion.Text = "Nuevo Cliente Creado";
                btnGuardar.Enabled = false;
                btnOtro.Visible = true;
            }
            if (Accion == 2)
            {
                bmClientes.BMClientesUpdate(cliente);
                lblAccion.Text = "Cliente Actualizado";
            }

        }
        catch (Exception ex) { ErrorUI(ex); }
    }
    #endregion

    #region Limpiar
    /// <summary>
    /// Limpia controles de Interfaz
    /// </summary>
    private void Limpiar()
    {
        try
        {
            txtNombre.Text = "";
            txtSaldo.Text = "0";
            txtBanco1.Text = "";
            txtCuenta1.Text = "";
            txtBanco2.Text = "";
            txtCuenta2.Text = "";
            txtDireccion.Text = "";
            txtLocalidad.Text = "";
            cboProvincia.SelectedValue = "0";
            txtCodPostal.Text = "";
            txtTe1.Text = "";
            txtTe2.Text = "";
            txtTe3.Text = "";
            txtTe4.Text = "";
            txtContacto.Text = "";
            txtEmail.Text = "";
            txtObs.Text = "";
            txtDatosFactura.Text = "";
            txtTipoFac.Text = "";
            txtCondIva.Text = "";
            lblAccion.Text = "Nuevo Cliente";
      
        }
        catch (Exception ex) { ErrorUI(ex); }
    }
    #endregion

    #endregion
}
